package com.naiterui.ehp.ps.sms.service;

import java.util.List;

import com.naiterui.ehp.bp.support.exception.BusinessException;
import com.naiterui.ehp.ps.sms.bean.Template;
import com.naiterui.ehp.ps.sms.exception.SmsBusinessException;
import com.naiterui.ehp.ps.sms.vo.TemplateVO;

/**
 * 短信模板service层接口
 *
 * @author
 * @since 1.0.0
 */
public interface ITemplateService {
    /**
     * 根据条件获取短信模板信息
     * ITemplateService.getBySearch()
     *
     * @param template
     * @return
     * @throws SmsBusinessException
     * @Author
     * @Date 2017年7月25日
     * @since 1.0.0
     */
    List<Template> getBySearch(Template template);

    /**
     * 添加模板信息
     * ITemplateService.addTemplate()
     *
     * @param templateVO
     * @param
     * @Author
     * @Date 2017年7月25日
     * @since 1.0.0
     */
    void addTemplate(TemplateVO templateVO, Integer[] platformIds) throws SmsBusinessException;

    /**
     * 根据模板主键ID获取模板信息
     * ITemplateService.getTemplateByID()
     *
     * @param id
     * @return
     * @Author
     * @Date 2017年7月25日
     * @since 1.0.0
     */
    Template getTemplateByID(Integer id);

    /**
     * 根据唯一索引获取模板信息
     * ITemplateService.getTemplateByUnique()
     *
     * @param platformId
     * @param templateId
     * @return
     * @Author
     * @Date 2017年7月27日
     * @since 1.0.0
     */
    Template getTemplateByUnique(Integer platformId, Integer templateId);

    /**
     * 从缓存中获取模板信息
     * ITemplateService.getTemplateFromCache()
     *
     * @param platformId
     * @param templateId
     * @return
     * @Author
     * @Date 2017年8月11日
     * @since 1.0.0
     */
    TemplateVO getTemplateFromCache(Integer platformId, Integer templateId);

    /**
     * 更新模板信息
     * ITemplateService.updateTemplate()
     *
     * @param oldTemplate
     * @param newTemplate
     * @Author
     * @Date 2017年7月25日
     * @since 1.0.0
     */
    void updateTemplate(Template oldTemplate, Template newTemplate) throws SmsBusinessException;

    /**
     * 更新模板信息
     *
     * @param templateVO
     * @throws BusinessException
     */
    void updateTemplate(TemplateVO templateVO) throws BusinessException;

    /**
     * 根据id删除模板信息
     * ITemplateService.deleteTemplateByID()
     *
     * @param id
     * @Author
     * @Date 2017年7月25日
     * @since 1.0.0
     */
    void deleteTemplateByID(Integer id) throws SmsBusinessException;

    /**
     * 更新模板状态
     * ITemplateService.updateTemplateStatus()
     *
     * @param template
     * @param status
     * @throws SmsBusinessException
     * @Author
     * @Date 2017年8月10日
     * @since 1.0.0
     */
    void updateTemplateStatus(Template template, int status) throws SmsBusinessException;

    /**
     * 更新容联默认短信模板ID
     *
     * @param templateId
     */
    void updateDefaultCoopenTemplateId(String templateId);
    /**
     * 获取模板信息
     * ITemplateService.getTemplateByID()
     *
     * @param templateId
     * @return
     * @Author
     * @Date 2017年7月25日
     * @since 1.0.0
     */
    Template getTemplateByTemplateId(String templateId);


    /**
     * 更新容联默认短信模板ID
     *
     * @param template
     */
    void updateTemplateForMsg(Template template);
}
